/*
【问题描述】
输入一个正整数 n，求 1~n 之间“回文数”的个数。回文数是指一个数倒过来和原数一样，
	如 12121、11、1221、1 是回文数，而 1231 不是回文数。
【输入格式】
一行一个正整数 n，1≤n≤10000。
【输出格式】
一行一个正整数，表示 1~n 之间回文数的个数。
【输入样例】
12
【输出样例】
10

解析：
	1.方法：循环（for、while、do-while）
	2.判断回文数方法：
	3.计数：定义变量，是回文就自增加1

*/

#include <iostream>
using namespace std;

int main() {
	// 1. 先让小朋友输入一个数字，比如 12321
	int num;
	cout << "请输入一个数字：";
	cin >> num;
	
	// 2. 把原来的数字存起来，等下要对比
	int original = num;
	
	// 3. 准备一个“空盒子”，用来装倒过来的数字
	int reversed_num = 0;
	
	// 4. 开始“反转数字”：每次取最后一位，拼到新数字后面
	// 就像把“12321”从最后一位开始拆：1→2→3→2→1
	while (num > 0) {
		// 取最后一位（比如12321的最后一位是1）
		int last_digit = num % 10;
		
		// 把最后一位拼到新数字后面（0→1→12→123→1232→12321）
		reversed_num = reversed_num * 10 + last_digit;
		
		// 把已经用过的最后一位去掉（12321→1232→123→12→1→0）
		num = num / 10;
	}
	
	// 5. 对比：原来的数字和倒过来的数字一样吗？
	if (original == reversed_num) {
		cout << original << " 是回文数！";
	} else {
		cout << original << " 不是回文数～";
	}
	
	return 0;
}
